每個變數都有自己的作用範圍,若使用前未宣告,就會變成全域變數,若是在函式內宣告的變數,則只能在該區域內使用,也就是說 JavaScript 在查找變數時,會循著範圍鏈一層層往外尋找,所以在了解閉包是如何運作之前,必須先對範圍鏈,也就是變數的作用範圍要有一定的認識,以下就讓我們用程式碼來說明吧!
// 會優先查找函式範圍內,若函式範圍內無該變數,則會往外部或全域範圍找尋。
var a = 1;
(function() {
console.log(a); // 1
})();
// 驗證優先查找函式範圍內。
var a = 1;
(function() {
var a = 100;
console.log(a); // 100
})();
// 查找函式範圍內·並無該變數,所以使用全域變數
var a = 1;
(function() {
a = 100;
console.log(a); // 100
})();
console.log(a); // 100
// 將全域變數當作參數傳入函式內,該參數視同區域變數。
var a = 1;
(function(a) {
a = 100;
console.log(a); // 100
})(a);
console.log(a); // 1
終於要進入到閉包的章節了,希望下一篇文章能寫得淺顯易懂,讓各位客倌能輕鬆理解閉包並且應用!
各位客倌,我們明天見!